关于java:maven 您所在的位置:网站首页 maven shade plugin本地jar 关于java:maven

关于java:maven

2023-10-30 12:58| 来源: 网络整理| 查看: 265

使用maven-shade-plugin,是否有一种方法可以排除依赖项(未"提供")及其所有传递依赖项?

例如 :

1234567891011             com.example         some-artifact         1.0.0-SNAPSHOT         ... other dependencies

和1)

123456789101112131415161718192021222324252627                         org.apache.maven.plugins             maven-shade-plugin             2.3                                                                         *:*                                                                 com.example:some-artifact                                                                                                 package                                             shade                                                            

或2)

1234567891011121314151617181920212223242526272829303132                         org.apache.maven.plugins             maven-shade-plugin             2.3                                                                         *:*                                                                                                 com.example:some-artifact                                                     **                                                                                                                         package                                             shade                                                            

那些不起作用。 com.example:some-artifact的所有传递依赖项都添加到最终的jar中。 请注意,我不想将com.example:some-artifact的范围设置为"提供"。

从配置文件中运行"阴影",并将您的依赖项标记为仅在该配置文件中提供。 例如:

123456789101112131415161718192021222324252627282930313233             shadeProfile                                     com.example                 some-artifact                 1.23                 provided                                                                             org.apache.maven.plugins                     maven-shade-plugin                     2.3                                                                         package                                                             shade                                                                                         shaded                                                                                                                

当您运行mvn -PshadeProfile package时,它将按提供的方式对待您的依赖项(因此忽略其依赖项),并且它将使用分类器" shaded",因此您可以将其用作其他模块中的依赖项。

相关讨论 重要的是要知道,如果您对" some-artifact"的一个传递依赖项具有未提供的依赖项(甚至是传递性依赖项),那么shadow插件将包括该构件。 结果,有时该解决方案将无法达到期望的效果。

我尝试了以下配置,它也对我有用:

12345678910111213141516171819202122232425262728293031     org.apache.maven.plugins     maven-shade-plugin     3.1.0                         package                             shade                                     client-${artifactId}                                     *:*                                     META-INF/*                                                                         org.apache.jmeter:*                 com.fasterxml.jackson.core:jackson-databind:*                 com.fasterxml.jackson.module:jackson-module-scala_2.11:*                        

您必须记住,默认情况下将包括所有依赖项COMPILE。 但是,如果您在artifactSet的includes中设置了工件,则仅考虑那些工件,其余的工件将被排除(依赖关系及其传递性依赖关系)

有时,只包括所需的依赖项比排除所有其余的要容易。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有